package com.lxz.jucdemo.lock_problem;

/**
 * @Author: 刘新智
 * @Date: 2025/10/27 15:01
 * @Description: synchronized 锁的是对方法的调用者
 * @Version: v1.0
 */
public class Test01 {
    public static void main(String[] args) {

        /**
         *   1、标准情况下，两个线程先打印 发短信还是 打电话？ 1/发短信 2/打电话
         * * 2、sendSms延迟4秒，两个线程先打印 发短信还是 打电话？ 1/发短信 2/打电话
         */
        Phone phone = new Phone();
        new Thread(()->{
            phone.sendSMS();
        },"A").start();

        new Thread(()->{
            phone.call();
        },"B").start();
    }
}

    class Phone{
    public  synchronized void sendSMS(){
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("发短信");
    }

    public  synchronized void call(){
        System.out.println("打电话");
    }
}
